Skip to content

Árvore de decisão

Objetivo

O dataset Customer Churn – reúne dados de clientes de uma operadora de telecom com o objetivo: prever se o cliente vai cancelar (Churn) ou permanecer.

Descrição das colunas (dicionário de dados)

customerID: ID do cliente

Gender: Gênero do cliente (feminino, masculino)

SeniorCitizen: Se o cliente é idoso ou não (1, 0)

Partner: Se o cliente tem cônjuge/parceiro (Sim, Não)

Dependents: Se o cliente possui dependentes (Sim, Não)

Tenure: Número de meses que o cliente permaneceu na empresa

PhoneService: Se o cliente possui serviço de telefonia (Sim, Não)

MultipleLines: Se o cliente possui múltiplas linhas (Sim, Não, Sem serviço de telefonia)

InternetService: Provedor de internet do cliente (DSL, Fibra óptica, Sem internet)

OnlineSecurity: Se o cliente possui segurança online (Sim, Não, Sem serviço de internet)

OnlineBackup: Se o cliente possui backup online (Sim, Não, Sem serviço de internet)

DeviceProtection: Se o cliente possui proteção de dispositivos (Sim, Não, Sem serviço de internet)

TechSupport: Se o cliente possui suporte técnico (Sim, Não, Sem serviço de internet)

StreamingTV: Se o cliente possui streaming de TV (Sim, Não, Sem serviço de internet)

StreamingMovies: Se o cliente possui streaming de filmes (Sim, Não, Sem serviço de internet)

Contract: Tipo de contrato do cliente (Mês a mês, Um ano, Dois anos)

PaperlessBilling: Se o cliente utiliza fatura digital (Sim, Não)

PaymentMethod: Método de pagamento do cliente (Cheque eletrônico, Cheque enviado, Transferência bancária — automática, Cartão de crédito — automático)

MonthlyCharges: Valor cobrado mensalmente do cliente

TotalCharges: Valor total cobrado do cliente

Churn: Se o cliente cancelou (Sim ou Não)

Pré Processamento

1) padronização de tipos

Normalização de TotalCharges para numérico

2) Tratamento de valores faltantes

Numéricos (tenure, MonthlyCharges, TotalCharges): imputação pela mediana.

Categóricos (gender, Partner, Dependents, PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract, PaperlessBilling, PaymentMethod, Churn): imputação pela moda (valor mais frequente).

Traceback (most recent call last):
  File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\python.py", line 71, in _run_python
    exec_python(code, code_block_id, exec_globals)
  File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\_exec_python.py", line 8, in exec_python
    exec(compiled, exec_globals)  # noqa: S102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<code block: n1>", line 62, in <module>
    df = preprocess(df)
          ^^^^^^^^^^^^^^
  File "<code block: n1>", line 34, in preprocess
    label_encoder = LabelEncoder()
                     ^^^^^^^^^^^^
NameError: name 'LabelEncoder' is not defined

Divisão de dados

Os dados foram divididos em 70% para treino e 30% para validação, com o objetivo de evitar overfitting e obter uma estimativa mais fiel de desempenho.


Feature Importances:

Feature Importance
18 TotalCharges 0.216553
17 MonthlyCharges 0.200873
14 Contract 0.165401
4 tenure 0.112102
8 OnlineSecurity 0.046695
16 PaymentMethod 0.040729
0 gender 0.028548
7 InternetService 0.026263
2 Partner 0.024023
3 Dependents 0.023208
15 PaperlessBilling 0.019727
1 SeniorCitizen 0.019219
6 MultipleLines 0.017198
10 DeviceProtection 0.014329
13 StreamingMovies 0.013331
9 OnlineBackup 0.011663
11 TechSupport 0.011616
12 StreamingTV 0.004789
5 PhoneService 0.003733
Accuracy: 0.73 2025-12-04T20:44:51.796218 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/

Avaliação do modelo

O modelo teve accuracy de 74% no conjunto de validação. Para um accuracy maior é necessario análise das variáveis com maior correlação para serem utilizadas no treinamento do modelo